#include<bits/stdc++.h>
#define ll long long 
#define endl '\n'
#define PII pair<int,int> 
using namespace std;
int n,m,k;
ll a[27],b[25];
string dp[30][30];
ll num(string s)
{
	ll sum=0;
	map<char,int> mp;
	for(int i=0;i<s.size();i++)
	{
		if(s[i]<='Z'&&s[i]>='A')
		{
			mp[s[i]]++;
		}
	}
	for(char i='A';i<='Z';i++)
	{
		if(mp[i]>=2)
		{
			sum+=mp[i]*(a[i-'A'+1]);
		}
	}
	return sum;
}
void solve()
{
	ll ans=0;
	for(int i=0;i<=24;i++)
	{
		dp[i][0]=' ';
	}
	vector<string> s;
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=1;i<=m;i++)
	{
		int p;
		string o;
		cin>>p;
		getline(cin,o);
		string t;
		for(int j=0;j<o.size();j++)
		{
			if(o[j]>='A'&&o[j]<='Z')
			{
				t+=o[j];
			}
		}
		s.push_back(t);
	}
	
//     for(int i=1;i<=m;i++)dp[i][1]=s[i-1];
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=k;j++)
		{
			if(num(dp[i-1][j-1]+s[i-1])>=num(dp[i-1][j]))
				dp[i][j]=dp[i-1][j-1]+s[i-1];
			else
				dp[i][j]=dp[i-1][j];
		}
		ans=max(ans,num(dp[i][k]));
	}
	cout<<ans;
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int tt=1;
// 	cin>>tt;
	while(tt--)solve();
	return 0;
} 
